home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / FPSE_src / include / cpu2.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-01  |  1.0 KB  |  48 lines

  1. #ifndef CPU2_H
  2. #define CPU2_H
  3.  
  4. typedef struct {
  5.      UINT32    r[32];
  6.      UINT32    pc;
  7.      UINT32    lo,hi;
  8.      UINT32    cpr0[32];
  9.      UINT32    ccr0[32];
  10.      UINT32    cpr2[32];
  11.      UINT32    ccr2[32];
  12.      /* support */
  13.      void *pcbase;
  14. } R3000_REG;
  15.  
  16. #define   rsno ((code>>21)&31)
  17. #define   rtno ((code>>16)&31)
  18. #define   rdno ((code>>11)&31)
  19.  
  20. #define   PC   reg.pc
  21. #define   rs   reg.r[rsno]
  22. #define   rt   reg.r[rtno]
  23. #define   rd   reg.r[rdno]
  24. #define   immS ((INT16)code)
  25. #define   immU (code&0xffff)
  26.  
  27. #define   CPR0 reg.cpr0
  28. #define   CPR2 reg.cpr2
  29. #define   CCR0 reg.ccr0
  30. #define   CCR2 reg.ccr2
  31. #define   SR   CPR0[12]
  32. #define   CAUSE     CPR0[13]
  33. #define   EPC  CPR0[14]
  34.  
  35. #define   EXCEPTION(code)     PC-=4; Exception(code*4)
  36. #define   rHI             reg.hi
  37. #define   rLO             reg.lo
  38. #define   FETCH(pc)       SWAP32(*(UINT32*)((char*)reg.pcbase+pc))
  39. #define   SETPC(pc)       reg.pcbase=baseaddr(pc)
  40.  
  41. void Reset(void);
  42. void Exception(int cd);
  43. void Interrupt(void);
  44. void doInst(void);
  45. void setpc(int pc);
  46. void printpc(void);
  47.  
  48. #endif